const Router = require("koa-router");
const router = new Router();
const jwt = require("jsonwebtoken");
const { returnMsg, queryFn } = require("../../utils");

router.post("/", async (ctx) => {
  console.log(ctx.request.body);
  let { username, password } = ctx.request.body;
  if (username && password) {
    //查询数据库到底有没有这个账户
    let sql = `SELECT * FROM cms_user WHERE username='${username}'`;
    let result = await queryFn(sql);
    if (result.length > 0) {
      //存在这个用户
      // 根据username和password生成token 把生成的token更新到这个用户身上
      let token = jwt.sign(
        { username, password }, // 携带信息
        "yusir", // 秘钥
        { expiresIn: "1h" } // 有效期：1h一小时
      );
      let sql = `UPDATE cms_user SET token='${token}' WHERE username='${username}'`;
      //   插入token
      await queryFn(sql);
      //再次查询用户
      let usersql = `SELECT * FROM cms_user WHERE username='${username}'`;
      let userResult = await queryFn(usersql);
      let userinfo = {
        username: userResult[0].username,
        "cms-token": userResult[0].token,
        avatar: userResult[0].avatar,
        player: userResult[0].player,
        editable: userResult[0].editable,
      };
      ctx.body = returnMsg(0, "登录成功", userinfo);
    } else {
      //不存在这个用户
      ctx.body = returnMsg(2, "用户不存在", "用户不存在,请先注册");
    }
  } else {
    ctx.body = returnMsg(1, "参数错误", "用户名或密码出错");
  }
});

module.exports = router;

/* 
【登录】用户名和密码接收：
1、校验是否有username和password 
    a.字段正常,走到2
    b.字段有错误,立刻返回消息(用户名或密码错误)
2、查询数据库有没有这个username
    a.已经存在该用户,走到3
    b.不存在该用户,返回消息(请先注册)
3、把生成的token存入cms_user表,并且查询对应用户的所有信息返回给前端


【用户角色权限】
1、管理员
    可以给普通用户增加编辑权限
2、普通用户
【编辑许可权限】
1、管理员可以编辑
2、普通用户需要等管理员赋予权限才可编辑

重新优化注册的代码（player，editable）
登录成功需要返回player和editable字段
*/
